/*
 * CEV: sistema open-source para voteções institucionais
 * Copyright (C) 2009, 2010, 2011 Skynet Coders @ Universidade Estadual de Feira de Santana
 *
 * Este arquivo é parte do programa CEV.
 *
 * CEV é um software livre; você pode redistribui-lo e/ou modifica-lo
 * dentro dos termos da Licença Pública Geral GNU (GNU GPL) como publicada
 * pela Fundação do Software Livre (FSF) na versão 3 da Licença.
 *
 * Este programa é distribuido na esperança que possa ser util, mas
 * SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
 * MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para
 * maiores detalhes.
 *
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU
 * junto com este programa, se não, escreva para a Fundação do Software
 * Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

#ifndef USERMODEL_H
#define USERMODEL_H

#include <QString>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlRecord>
#include <QMutex>
#include <QDate>

#include <model/database.h>

using namespace std;

class UserModel
{
public:
    // constructor
    UserModel();
    // desctructor
    ~UserModel();

    // public atributes and methods

    // table fields
    QString name;
    QString type;
    QString description;

    // getters and setters
    void setLogin(QString login);
    void setPassword(QString pass);
    void setRegistration(QString registration);
    QString getLogin();
    QString getPassword();
    QString getRegistration();

    // public methods
    bool databaseExists();
    bool openDatabase();
    bool closeDatabase();
    bool add();
    bool load(QString registration);
    bool update();

private:
    //config data
    QSqlDatabase connection;
    QString connectionName;
    QString databaseDriver;
    QString databaseName;

    //private table data
    QString registration;
    QString login;
    QString password;

    //initialization function
    bool initialize();
};

#endif // USERMODEL_H
